Linux 定时任务

文章目录
  1. 开笔
  2. cron服务查看
  3. cron服务管理
  4. 配置 corn 服务权限
  5. 编辑cron任务

开笔

最近在做数据收集涉及到一些日志文件轮转切割,笔者想用一个定时任务来实现定时轮转。调研后决定使用 Linux 系统的 cron 服务。

Cron 是Uninx系(Linux) 操作系统的后台驻留程序,系统管理员用得相对多一些。Cron 可以被设置为开机启动,在 centos 中默认就是开机启动的服务。

在使用 cron 服务的时候,往往我们都需要 先确认cron服务本身是否开启,处于运行状态,确认当前用户是否有权限正常使用cron,编辑下发cron计划任务,确认我们的计划任务是否如约按照计划执行。本篇笔者就和大家一起看看:

  1. 查看当前系统cron服务状态
  2. 管理 cron 服务
  3. 配置 corn 服务权限
  4. 编辑下发 cron 计划任务
  5. 查看 任务是否按照计划执行

cron服务查看

除了可以用 ps 命令查看 cron 服务进程运行状态,还可以查看正在运行的cron服务调度本身的状态。通过 crontab 命令对cron服务的设置。用:

man crontab

查看一下crontab命令,发现,crontab 有4个可选参数:

  • -u:设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
  • -l:列出某个用户cron服务的详细内容
  • -r:删除某个用户的cron服务
  • -e:编辑某个用户的cron服务

cron服务管理

如果经过查看,我们发现cron并不是你要的状态,那么就开始管理它吧。作为后台服务,cron有着与我们熟知的服务程序相似地基本管理命令:启动、停止、重启、重新载入配置(需要稍微注意一点,这里是crond 而不是 cron):

  • 启动服务:

    1
    /sbin/service crond star
  • 关闭服务

    1
    /sbin/service crond stop
  • 重启服务

    1
    /sbin/service crond restart
  • 重新载入配置

    在每一次重新修改过cron配置文件,请务必重新载入一下配置:

    1
    /sbin/service crond reload

配置 corn 服务权限

在 Linux 操作系统中,对用户使用cron服务的权限控制在 /etc/cron.allow 和 /etc/cron.deny 两个文件中配置实现,但 /etc/cron.allow 文件非必须存在的。

如果 /etc/cron.allow 文件存在,则所有需要运行 crontab 命令的用户必须在这个文件被列举出来;如果 /etc/cron.allow 文件不存在,但
/etc/cron.deny 文件存在,则所有需要运行 crontab 命令的用户必须在这个文件不被列举出来。当这两个文件都不存在的情况下,在一些 Linux 系统(如 Ubuntu、Debian ,但不是所有)允许所有用户运行 crontab 命令。

需要注意的是,系统中,不在 /etc/shadow 文件所列的用户,是没有权限使用 crontab 命令。

编辑cron任务

  1. 语法

    1
    2
    3
    4
    5
    6
    7
    8
    * * * * * Command_to_execute
    - – – – -
    | | | | |
    | | | | +—– Day of week (0–6) (Sunday=0) or Sun, Mon, Tue,…
    | | | +———- Month (1–12) or Jan, Feb,…
    | | +————-— Day of month (1–31)
    | +——————– Hour (0–23)
    +————————- Minute (0–59)
  2. 示例

    每天凌晨轮转nginx的access日志

    1
    01 00 * * * /usr/sbin/logrotate /etc/logrotate.d/nginx-access-log.conf

    系统便会在每天凌晨壹分的时刻执行 /usr/sbin/logrotate /etc/logrotate.d/nginx-access-log.conf 命令,实际就是每天凌晨进行日志轮转